#include <stdio.h>
#include <dlfcn.h>

typedef int (*my_func)();

void load_test2()
{
    
    void *handle = dlopen("./libtest2.so", RTLD_LAZY);
}

int main()
{
    void *handle = dlopen("./libtest1.so", RTLD_LAZY);

    load_test2();
    if (!handle) {
        fprintf(stderr, "Error: %s\n", dlerror());
        return 1;
    }

    my_func func = (my_func)dlsym(handle, "add_test1");
    if (!func) {
        fprintf(stderr, "Error: %s\n", dlerror());
        dlclose(handle);
        return 1;
    }

    func();  // Execute loaded function
    

    printf("xxx:0x%x\n", func());
    dlclose(handle);
    return 0;
}